/**
 * Title: IFileTransferManager.java
 * Description:
 * Copyright: Copyright (c) 2008
 * Company:深圳彩讯科技有限公司
 * Author 罗旭东 (hi@luoxudong.com)
 * Date 2013-8-14 下午5:32:43
 * Version 1.0 
 */
package com.luoxudong.phonenumber.service.net.http.filetransfer.interfaces;

import android.content.Context;

/** 
 * ClassName: IFileTransferManager 
 * Description:文件传输管理接口
 * Create by 罗旭东
 * Date 2013-8-14 下午5:32:43 
 */
public interface IFileTransferManager {
	/**
	 * 普通文件下载
	 * @param context 上下文
	 * @param url 文件url
	 * @param localFileDir 文件保存目录
	 * @param fileName 文件名
	 * @return 成功则返回下载id，失败则返回-1
	 */
	public int download(Context context, String url, String localFileDir, String fileName);
	
	/**
	 * 普通文件下载
	 * @param context 上下文
	 * @param url 文件url
	 * @param localFileDir 文件保存目录
	 * @param fileName 文件名
	 * @param displayName 文件显示名称
	 */
	public int download(Context context, String url, String localFileDir, String fileName, String displayName);
	
	/**
	 * 停止下载文件
	 * @param downloadId 下载ID
	 * @param stopDownloadListener 停止下载监听器
	 */
	public void stopDownload(int downloadId, IStopDownloadListener stopDownloadListener);
	
	/**
	 * 取消清除下载记录
	 * @param downloadId 下载ID
	 * @param removeDownloadListener 取消清除下载监听器
	 */
	public void removeDownload(int downloadId, IRemoveDownloadListener removeDownloadListener);
	
	/**
	 * 添加下载监听器
	 * @param downloadListener 下载监听器
	 */
	public void addDownloadListener(IDownloadListener downloadListener);
	
	/**
	 * 移除下载监听器
	 * @param downloadListener 需要移除的下载监听器
	 */
	public void removeDownloadListener(IDownloadListener downloadListener);
	
	
	/**
	 * 普通文件上传
	 * @param context 上下文
	 * @param url 上传url
	 * @param localFileDir 本地上传路径
	 * @param fileName 文件名
	 */
	public int upload(Context context, String url, String localFileDir, String fileName);
	
	/**
	 * 停止上传文件
	 * @param uploadId 上传记录ID
	 * @param stopUploadListener 停止上传监听器
	 */
	public void stopUpload(int uploadId, IStopUploadListener stopUploadListener);
	
	/**
	 * 取消并删除上传记录
	 * @param uploadId 上传ID
	 * @param removeUploadListener 取消并删除上传记录监听器
	 */
	public void removeUpload(int uploadId, IRemoveUploadListener removeUploadListener);
	
	/**
	 * 添加上传监听
	 * @param uploadListener
	 */
	public void addUploadListener(IUploadListener uploadListener);
	
	/**
	 * 移除上传监听器
	 * @param uploadListener 需要移除的上传监听器
	 */
	public void removeUploadListener(IUploadListener uploadListener);
	
	/**
	 * 停止所有任务
	 */
	public void stopAllTransferTask();
	
}
